package basic50.fiftieth;

public class Basic41 {
    public static void main(String[] args) {
       // 题目：海滩上有一堆桃子，五只猴子来分。第一只猴子把这堆桃子凭据分为五份，多了一个，这只猴子把多的一个扔入海中，拿走了一份。
        // 第二只猴子把剩下的桃子又平均分成五份，又多了一个，它同样把多的一个扔入海中，拿走了一份，
        // 第三、第四、第五只猴子都是这样做的，问海滩上原来最少有多少个桃子？
        int monkeys = 5;
        int result = findMinimumPeaches(monkeys);
        System.out.println("海滩上原来最少有 " + result + " 个桃子");
    }

    public static int findMinimumPeaches(int monkeys) {
        int peaches = 1; // 从1开始尝试
        while (true) {
            if (isPossible(peaches, monkeys)) {
                return peaches;
            }
            peaches++;
        }
    }

    public static boolean isPossible(int peaches, int monkeys) {
        for (int i = 0; i < monkeys; i++) {
            if ((peaches - 1) % 5 != 0) {
                return false; // 如果不能整除5，说明当前桃子数不满足条件
            }
            peaches = (peaches - 1) / 5 * 4; // 模拟猴子拿走一份后剩下的桃子数
        }
        return true;
    }
}
